home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Day Cry
/
Day Cry CD.bin
/
oh_towns
/
ein
/
sources
/
einlib.lzh
/
LIBSRC.LZH
/
EIN_RSM.C
< prev
next >
Wrap
Text File
|
1994-07-18
|
35KB
|
1,340 lines
/*<Header>==============================================================
*
* RESUME MANAGER / "EIN_RSM.C"
*
* COPYRIGHT Nam 1994, All rights reserved.
*
* [ Ein(tm) project : âèâWâàü[âÇâ}âlü[âWââè╓ÉöîQ ]
*
*-----------------------------------------------------------------------
* V1.0L01â┐ 94.04.12/Nam âvâìâgâ^âCâv
* V1.0L01â┴ 94.04.15/Nam debug,EOFæ╬ë₧
* V1.0L02â┐ 94.04.18/Nam `RSM_WORK'é╔Ädùlò╧ìX
* V1.0L03â┐ 94.04.27/Nam âvâìâWâFâNâgû╝é≡'EIN(TM)'é╔üiû╜û╝:é▄éQüj
* V1.0L03â┴ 94.06.22/Nam CDïNô«Ä₧é═inité╔Ä╕ösé╖éΘéµéñò╧ìX
* V1.0L04â┐ 94.07.06/Nam DLLë╗/è╓Éöû╝é≡'EIN_rsm..'é╔ò╧ìX
*</Header>==============================================================*/
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <snd.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include <time.h>
#define EIN_RSM
#include "..\eintm.h"
#define RSMVER ("### EIN(TM): Resume Data File V0.1L04â┐ ###\n\n\n")
#define RSMENV ("RSM")
#define RSMNAME ("RESUME.INI")
#define RBKNAME ("RESUME.BAK")
#ifndef NOERR
#define NOERR (0)
#endif
#ifndef ERROR
#define ERROR (1)
#endif
#define CHR_EOF (0x1a)
#define CHR_EOB (0x01) /* ^A */
#define CHR_CR (0x0d)
#define CHR_LF (0x0a)
#ifdef EINLIB
#define CBUFSIZE (4096)
#define PBUFSIZE (512)
#else
#define CBUFSIZE (256)
#define PBUFSIZE (128)
#endif
#define RSMWID ("RSMMGR 004â┐")
#define RSMTAGIDLEN (63)
#define RSMPATHLEN (63)
/* âÅü[âNâGâèâAÄ»ò╩id */
static char rsmworkstr[16]=RSMWID;
/* ëⁿìsò╢ÄÜüòëⁿâfü[â^ò╢ÄÜ */
static char str_lf[3]={ CHR_CR, CHR_LF, 0 };
static char str_eob[4]={ CHR_EOB, CHR_CR, CHR_LF, 0 };
/* ïñùpôⁿÅoù═âoâbâtâ@êµ */
static char cbuf[CBUFSIZE+2];
/* ò╥ÅWæ«É½ì\æóæ╠ */
typedef struct {
/* âÅü[âNâGâèâAÄ»ò╩ò╢ÄÜù± */
char workid[16]; /* âÅü[âNâGâèâAÄ»ò╩ò╢ÄÜù± */
char *rbuf; /* âfü[â^âoâbâtâ@â|âCâôâ^ */
long int rbufsize; /* âfü[â^âoâbâtâ@âTâCâY */
char idstr[64]; /* Ä»ò╩â^âOò╢ÄÜù± */
char bname[64]; /* ô╟é▌Åoé╡âtâ@âCâïû╝ */
char fname[64]; /* Åæé½ì₧é▌âtâ@âCâïû╝ */
FILE *fp_r; /* ô╟é▌Åoé╡ùpâtâ@âCâïâ|âCâôâ^ */
FILE *fp_w; /* Åæé½ì₧é▌ùpâtâ@âCâïâ|âCâôâ^ */
long int tagstart; /* âfü[â^èJÄnê╩Æu */
long int fstart; /* ÄwÆΦâfü[â^èJÄnê╩Æu */
long int osize; /* ÄwÆΦâfü[â^é╠âTâCâY(byte) */
long int tagSum; /* ò█æ╢é╡é╜â^âOæìÉö */
long int bufRemain; /* ò█æ╢âoâbâtâ@é╠ÄcéΦ(byte) */
char bufError; /* ò█æ╢âGâëü[âtâëâO(saveÄ₧é╔Ägùp) */
char lastChar; /* ì┼îπé╔âRâsü[é╡é╜ò╢ÄÜ */
} EIN_RSMWORK; /* âèâWâàü[âÇâ}âlü[âWâââÅü[âNì\æóæ╠ */
/*<Func>================================================================
* int EIN_rsmInit( EIN_RSMWORK *work, char *idstr )
*
* üyèT ùvüz âèâWâàü[âÇâ}âlü[âWââé╠Åëè·ë╗
*
* üyï@ ö\üz
*
* üyôⁿ ù═üz
* *work : âÅü[âNâGâèâAé╓é╠â|âCâôâ^
* *idstr : Ä»ò╩idò╢ÄÜù±é╓é╠â|âCâôâ^(ÅIÆ[é═NULL,ëⁿìsû│é╡)
*
* üyÅo ù═üz
*
* üyè╓ÉöÆlüz == NOERR É│ÅφÅIù╣
*
* üyÆì ê╙üz
*
* üyÄQ Å╞üz
*
*-----------------------------------------------------------------------
* V11L10 1994.04.16/Nam
*</Func>==============================================================*/
int EIN_rsmInit( EIN_RSMWORK *work, char *idstr )
{
int bootDrv;
int len;
int ret = NOERR;
char path[64];
/* âÅü[âNâGâèâAÄ»ò╩idÅæé½ì₧é▌ */
strcpy( work->workid, rsmworkstr);
/* âfü[â^Ä»ò╩idô╟é▌ì₧é▌ */
strncpy( work->idstr, idstr, RSMTAGIDLEN );
work->idstr[RSMTAGIDLEN] = '\0'; /* idÆ╖é¬æσé½é╖é¼éΘÅΩìçé╠trap */
/* âÅü[âNÅëè·ë╗ */
work->rbuf = NULL; /* âfü[â^âoâbâtâ@â|âCâôâ^ */
work->rbufsize = 0; /* âfü[â^âoâbâtâ@âTâCâY */
work->fp_r = NULL; /* ô╟é▌Åoé╡ùpâtâ@âCâïâ|âCâôâ^ */
work->fp_w = NULL; /* Åæé½ì₧é▌ùpâtâ@âCâïâ|âCâôâ^ */
work->tagstart = 0; /* âfü[â^èJÄnê╩Æu */
work->fstart = 0; /* ÄwÆΦâfü[â^èJÄnê╩Æu */
work->osize = 0; /* ÄwÆΦâfü[â^é╠âTâCâY */
work->tagSum = 0; /* â^âOæìÉö */
work->bufRemain= 0; /* ò█æ╢âoâbâtâ@é╠ÄcéΦ(byte) */
work->bufError = NOERR; /* âoâbâtâ@ò█æ╢âtâëâO */
work->lastChar = 0; /* ì┼îπé╔âRâsü[é╡é╜ò╢ÄÜ */
/* âèâWâàü[âÇâtâ@âCâïé╠âpâXû╝é≡ĵô╛ */
if ( (getenv(RSMENV) == NULL) ){
/* è┬ï½âpâXé¬æ╢ì▌é╡é╚éóÅΩìçé═ */
#ifdef EINLIB
extern unsigned char FSYS_getBOOT();
bootDrv = FSYS_getBOOT();
#else
bootDrv=3; /* ÆPô╞âeâXâgé╠ÅΩìçé═CâhâëâCâué╔î┼ÆΦ */
#endif
/* ïNô«âhâëâCâué¬Qê╚èOé╚éτâèâWâàü[âÇë┬ö\ */
if ( bootDrv != 16 ){
path[0]=(bootDrv+'A');
path[1]=0;
strcat(path, ":\\T_FILE\\");
} else {
/* ïNô«âhâëâCâué¬Qé╚éτâèâWâàü[âÇé┼é½é╚éó */
strcpy( work->workid, "");
ret = ERROR;
}
} else {
/* è┬ï½âpâX(%RESUME%)é¬ùLéΘ*/
strncpy( path, getenv(RSMENV), (RSMPATHLEN-13) );
*(path+(RSMPATHLEN-13)) = '\0'; /* idÆ╖é¬æσé½é╖é¼éΘÅΩìçé╠trap */
len = strlen (path); /* âpâXû╝é≡ô╛éΘ */
if (path[len-1] != '\\'){ /* ÅIÆ[é¬ '\' é┼û│éóÅΩìçé═ */
strcat(path, "\\"); /* '\'é≡Æ╟ë┴ */
}
}
/* âèâWâàü[âÇâtâ@âCâïé╠ÉΓæ╬âpâXû╝é≡É▌ÆΦ */
strcpy(work->fname, path);
strcat(work->fname, RSMNAME);
/* âèâWâàü[âÇâtâ@âCâïé╠âoâbâNâAâbâvé╠ÉΓæ╬âpâXû╝é≡É▌ÆΦ */
strcpy(work->bname, path);
strcat(work->bname, RBKNAME);
#ifdef DEBUG
printf(" EIN_rsmInit( %x, %s )\n", work, idstr);
printf(" fname:%s bname:%s\n", work->fname, work->bname);
printf(" bootDrv=%d\n", bootDrv);
#endif
return ret;
}
/*======================================================================
* int __EIN_rsmChkWork( EIN_RSMWORK *work )
*
* üyèT ùvüz âèâWâàü[âÇâ}âlü[âWâââÅü[âNâGâèâAé╠É│ôûɽâ`âFâbâN
*
* üyï@ ö\üz
*
* üyôⁿ ù═üz
* *work : âÅü[âNâGâèâAé╓é╠â|âCâôâ^
*
* üyÅo ù═üz
*
* üyè╓ÉöÆlüz == NOERR É│ÅφÅIù╣
* != NOERR ê┘ÅφÅIù╣
* -1:âÅü[âNâGâèâAé╠âAâhâîâXé¬NULL
* -2:âÅü[âNâGâèâAé¬ûóÅëè·ë╗
* -3:â}âlü[âWââé╠Versioné¬êßéñ
* -4:âÅü[âNâGâèâAé╠Åëè·ë╗é╔Ä╕ös
*
* üyÆì ê╙üz
*
* üyÄQ Å╞üz
*
*-----------------------------------------------------------------------
* V11L10 1994.04.16/Nam
*=====================================================================*/
int __EIN_rsmChkWork( EIN_RSMWORK *work )
{
if ( work==NULL ){
#ifdef DEBUG
printf("__EIN_rsmChkWork: âÅü[âNâGâèâAé╠âAâhâîâXé¬NULLé┼é╖\n");
#endif
return -1;
}
if ( work->workid[0]!='R' ){
#ifdef DEBUG
printf("__EIN_rsmChkWork: âÅü[âNâGâèâAé≡Åëè·ë╗é╡é─éóé▄é╣é±\n");
#endif
return -2;
}
if ( strcmp(work->workid,rsmworkstr) != 0){
#ifdef DEBUG
printf("__EIN_rsmChkWork: âèâWâàü[âÇâ}âlü[âWââé╠Versioné¬êßéóé▄é╖\n");
#endif
return -3;
}
if ( work->idstr==NULL || work->fname==NULL || work->bname==NULL ){
#ifdef DEBUG
printf("__EIN_rsmChkWork: âÅü[âNâGâèâAé╠Åëè·ë╗é╔Ä╕ösé╡é─éóé▄é╖\n");
#endif
return -4;
}
return NOERR;
}
/*======================================================================
* int __EIN_rsmGetBufRemain( EIN_RSMWORK *work )
*
* üyèT ùvüz âèâWâàü[âÇÅεò±âoâbâtâ@ÄcéΦÄZÅo
*
* üyï@ ö\üz âèâWâàü[âÇÅεò±âoâbâtâ@é╠ÄcéΦbyteÉöé≡îvÄZé╡é▄é╖
*
* üyôⁿ ù═üz *work : âÅü[âNâGâèâAé╓é╠â|âCâôâ^
*
* üyÅo ù═üz
*
* üyè╓ÉöÆlüz ÄcéΦbyteÉö
*
* üyÆì ê╙üz âoâbâtâ@ÅIÆ[âTâCâYé≡è▄é▀é▄é╖.
* âÅü[âNâGâèâAé╠â`âFâbâNé═é╡é╚éóé╠é┼Æìê╙é╡é─ë║é│éó.
*
* üyÄQ Å╞üz
*
*-----------------------------------------------------------------------
* V11L10 1994.06.24/Nam
*=====================================================================*/
int __EIN_rsmGetBufRemain( EIN_RSMWORK *work )
{
work->bufRemain = work->rbufsize -
(strlen(work->rbuf)+strlen(str_lf)+strlen(str_eob)+1);
return work->bufRemain;
}
/*<Func>================================================================
* int EIN_rsmBufHead( EIN_RSMWORK *work )
*
* üyèT ùvüz âèâWâàü[âÇÅεò±âoâbâtâ@IDÉ▌ÆΦ
*
* üyï@ ö\üz âèâWâàü[âÇÅεò±âoâbâtâ@ɵô¬é╔IDò╢ÄÜù±é≡É▌ÆΦé╡é▄é╖
*
* üyôⁿ ù═üz *work : âÅü[âNâGâèâAé╓é╠â|âCâôâ^